/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* E.P. Scene Graph
* Developed by:
*       - Eduardo Ribeiro (eribeiro @ tecgraf . puc-rio . br)
*       - Peter Dam (peter @ tecgraf . puc-rio . br)
* File: Scene.h
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */

#ifndef _EPSG_SCENE_
#define _EPSG_SCENE_

#include "EPSG/Vec4.h"
#include "EPSG/Group.h"
#include "EPSG/Prototypes.h"

#include <sigslot/sigslot.h>

namespace EPSG
{
	class Scene : public Group
	{
	public:
		/* [CONSTRUCTOR] */	Scene( bool autoLoad = true );

		virtual void		render();
		
		void				setBackColor( float r, float g, float b, float a );
		const Vec4<float>&	getBackColor();

		void				setEnviron( EPSG::Environ* e );

		void				setBackfaceCulling( bool val );

		static sigslot::signal1<EPSG::Scene*>&	getSignalSceneLoaded();

	private:
		Vec4<float>			_color;
		EPSG::Environ*		_environ;
		bool				_backfaceCulling;

		static sigslot::signal1<EPSG::Scene*>	s_signalSceneLoaded;
	};
}

#endif //_EPSG_SCENE_